package com.itheima.controller;

import com.itheima.pojo.Result;
import com.itheima.util.AliyunOSSOperator;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.multipart.MultipartFile;

import javax.annotation.Resource;
import java.io.IOException;

/**
 * @author liuyp
 * @since 2025/7/22
 */
@RestController
public class UploadController {
    @Resource
    private AliyunOSSOperator ossOperator;

    /**
     * 客户端上传文件了，Controller里如何接收文件参数？
     *  上传的文件也是表单参数，所以接收方式：
     *      添加形参，加@RequestParam("表单参数名")
     *      如果表单参数名 和方法形参名相同，可以省略掉这个注解
     *  接收文件，要使用MultipartFile类型的形参，我们通过这个参数，可以：
     *      获取原始文件名：getOriginalFilename()
     *      获取文件的大小：getSize()得到字节数
     *      将文件直接转存到磁盘：transferTo(new File("路径"))
     */
    @PostMapping("/upload")
    public Result upload(MultipartFile file) throws Exception {
        if (file!=null && !file.isEmpty()) {
            String filename = file.getOriginalFilename();
            // file.transferTo(new File("D:\\" + filename));

            //将文件上传到阿里云OSS，得到文件的url
            String url = ossOperator.upload(file.getBytes(), filename);
            //将url返回给客户端
            return Result.success(url);
        }

        return Result.error("文件不能为空");
    }
}
